package com.hw.job_1;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class StudentTest {

    public static void main(String[] args) {

        // 从文档中读取对象集合
//        List<Student> stArr = new ArrayList<>();
        System.out.println("系统启动...");
        List<Student> stArr = null;
        try {
            stArr = StudentTool.unArchiveList();
            System.out.println("已从文件读取学生信息成功");
        } catch (Exception e) {
            e.printStackTrace();
        }

        Scanner sc;
        while (true) {
            sc =  new Scanner(System.in);
            System.out.println("请选择你要的功能：1.增加 2.删除 3.修改 4.查找 5.遍历所有 0.退出系统");

            int option = sc.nextInt();
            if (option == 1) {
                sc =  new Scanner(System.in);
                System.out.println("已选择 增加 功能，请输入学生的学号、姓名、年龄，以空格隔开");
                String id = sc.next();
                String name = sc.next();
                int age = sc.nextInt();

                // 判断是否同一个学生
                Student st = null;
                try {
                    st = new Student(name, id, age);
                } catch (Exception e) {
                    e.printStackTrace();
                    continue;
                }
                boolean isExist = StudentTool.isExistStudent(stArr, st);
                // 如果存在同一个学生，则退出
                if (isExist) {
                    System.out.println("该学生已存在");
                    continue;
                }
                boolean result = stArr.add(st);
                if (result == true) {
                    System.out.println("添加学生成功");
                }
                continue;
            }

            if (option == 2) {
                sc =  new Scanner(System.in);
                System.out.println("已选择 删除 功能，请输入学生的学号、姓名、年龄，以空格隔开");
                String id = sc.next();
                String name = sc.next();
                int age = sc.nextInt();

                Student st = null;
                try {
                    st = new Student(name, id, age);
                } catch (Exception e) {
                    e.printStackTrace();
                    continue;
                }
                boolean result = stArr.remove(st);
                // 判断是否删除成功
                if (result) {
                    System.out.println("已删除姓名为" + name + ", 学号为" + id + "的学生");
                } else {
                    System.out.println("姓名为" + name + ", 学号为" + id + "的学生不存在，删除失败");
                }
                continue;
            }

            if (option == 3) {
                sc =  new Scanner(System.in);
                System.out.println("已选择 修改 功能，请输入学生的学号、姓名、年龄，以空格隔开，以修改年龄");
                String id = sc.next();
                String name = sc.next();
                int age = sc.nextInt();

                // 取出原来的学生，修改年纪
                Student st = null;
                try {
                    st = new Student(name, id, age);
                } catch (Exception e) {
                    e.printStackTrace();
                    continue;
                }
                int index = stArr.indexOf(st);
                if (index != -1) {
                    stArr.set(index, st);
                    System.out.println("已成功修改姓名为" + name + ", 学号为" + id + "的学生年龄为" + age);
                } else {
                    System.out.println("修改失败，该学生不存在");
                }

                continue;
            }

            if (option == 4) {
                System.out.println("已选择 查找 功能，请输入学生的姓名");
                String name = sc.next();
                // 使用迭代器查找
                Iterator itor = stArr.iterator();
                Student findSt = null;
                while (itor.hasNext()) {
                    Student st = (Student)itor.next();
                    if (st.getName().equals(name)) {
                        findSt = st;
                        break;
                    }
                }
                if (findSt != null) {
                    System.out.println("姓名为" + name + "的学生，完整信息为：" + findSt);
                } else {
                    System.out.println("姓名为" + name + "的学生不存在!!!");
                }
                continue;
            }

            if (option == 5) {
                System.out.println("已选择 遍历 功能，开始打印所有学生信息");
                if (stArr.isEmpty()) {
                    System.out.println("当前系统没有任何学生信息！");
                    continue;
                }
                for (Student st: stArr) {
                    System.out.println("st = " + st);
                }
                continue;
            }

            if (option == 0) {
                System.out.println("已选择 退出系统 功能");
                System.out.println("正在将学生信息保存，请稍等...");
                try {
                    StudentTool.archiveList(stArr);
                    System.out.println("保存学生信息成功");
                } catch (Exception e) {
                    e.printStackTrace();
                    System.out.println("保存学生信息失败");
                }
                break;
            }
        }
    }
}
